package com.zyl.blog.processing.service;

import com.zyl.blog.common.domain.file.bean.DocumentConversion;

import java.util.List;
import java.util.Optional;

/**
 * @version v1.0
 * @ProjectName: Personal_Blog_Server
 * @Package: com.zyl.blog.processing.service
 * @ClassName: DocumentConversionService
 * @Description:
 * @Author FinalFantasy
 * @Date 2025/8/14-13:25
 */
public interface DocumentConversionService {

    /**
     * 转换文档
     * @param sourceFileId 源文件ID
     * @param targetType 目标文件类型
     * @param userId 操作用户ID
     * @return 转换记录
     */
    DocumentConversion convertDocument(Long sourceFileId, String targetType, Long userId);

    /**
     * 异步转换文档
     * @param sourceFileId 源文件ID
     * @param targetType 目标文件类型
     * @param userId 操作用户ID
     * @return 转换任务ID
     */
    Long convertDocumentAsync(Long sourceFileId, String targetType, Long userId);

    /**
     * 获取转换状态
     * @param conversionId 转换ID
     * @return 转换记录
     */
    Optional<DocumentConversion> getConversionStatus(Long conversionId);

    /**
     * 获取文件的转换历史
     * @param fileId 文件ID
     * @return 转换历史列表
     */
    List<DocumentConversion> getConversionHistory(Long fileId);

    /**
     * 获取支持的转换类型
     * @return 转换类型列表
     */
    List<String> getSupportedConversions();

    /**
     * 取消转换任务
     * @param conversionId 转换ID
     * @return 是否取消成功
     */
    boolean cancelConversion(Long conversionId);
}